home *** CD-ROM | disk | FTP | other *** search
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- NAME
- rtrace - ray tracing program
-
- SYNOPSIS
- rtrace [options] scene image [>log]
-
- AUTHOR
- Antonio Costa, INESC-Norte, 1989 1994
-
- DESCRIPTION
- rtrace command performs ray tracing from a SFF text file which must
- ------ ---
- describe a scene with objects, lights, surface definitions, textures,
- etc. This scene file must be in the appropriate format, as described
- bellow.
- Basically, ray tracing is an algorithm for the creation of realistic
- images from the geometry and attributes of objects, lights, etc. This
- ray tracer supports several types of objects (sphere, box, bicubic patch,
- cone, cylinder, polygon, triangle and text), CSG and list operations,
- different light types, reasonable surface definitions, lots of textures,
- several anti-aliasing schemes, depth of field, stereoscopic image
- creation and so on...
-
- OPTIONS
- [wimage-width] [himage-height]
- ----- ----- ----- ------
- The parameters image-width and image-height define the image size.
- ----- ----- ----- ------
- Defaults are 256x256.
-
- [Aaliasing-threshold]
- -------- ---------
- [Sshading-threshold]
- ------- ---------
- [Tambient-threshold]
- ------- ---------
- The parameters aliasing-threshold (pixel supersampling), shading-
- -------- --------- -------
- threshold (shading rays propagation) and ambient-threshold (ambient rays
- --------- ------- ---------
- distribution caching) control the image quality (0-best, 1-poor).
- Defaults are 0.05, 0.01 and 0 (no ambient threshold). Good ranges are
- 0.1-0.03, 0.01-0.001 and 0.01-0.00001, respectively. If the aliasing-
- --------
- threshold parameter is negative, contrast between pixel colors will be
- ---------
- used instead of difference.
-
- [aantialiasing-mode]
- ------------ ----
- The parameter antialiasing-mode chooses adaptive supersampling
- ------------ ----
- antialiasing (0-default), semi-adaptive supersampling antialiasing (1) or
- normal supersampling antialiasing (2-should be used with nonzero focal
- apertures).
-
- [Bmaskfile]
- --------
- The parameter maskfile creates a file with a background mask, suitable
- --------
- for mixing images (it is like an alpha channel).
-
- [bbackface-mode]
- -------- ----
- The parameter backface-mode controls the removal of backface polygons and
- -------- ----
- triangles from the scene. Default is no removal (0). Partial removal (1)
- is made when finding candidates for ray-object intersection; if there are
- any objects facing against the ray, they will be skipped. Full removal
- (2) is made during the read of the scene; if there are any objects facing
- against the viewer, they are thrown away completely (this may cause
- incorrect lighting and shadowing).
-
-
- January, 1994 1
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- [ccluster-size]
- ------- ----
- The parameter cluster-size controls the enclosing of objects (number of
- ------- ----
- grouped objects per cluster) in the object hierarchy. Use a low value for
- sparse scenes, a high value for dense scenes (4-default). The value 1
- means to use a new method of clustering objects. Usually this method
- performs worse than the default method. The value 0 means to use a
- method similar to the one of Goldsmith/Salmon for clustering objects.
- Sometimes this method performs better than the default method.
-
- [dambient-levels]
- ------- ------
- The parameter ambient-levels defines the number of shading levels
- ------- ------
- (shading tree depth) in which ambient lighting calculations will be done
- through ray distribution (0-default, ie, no ray distribution). Use low
- values!
-
- [Dambient-samples]
- ------- -------
- The parameter ambient-samples defines the maximum number of distributed
- ------- -------
- rays to be used in ambient lighting calculations (16-default). Again, use
- with care.
-
- [iintersect-mode]
- --------- ----
- The parameter intersect-mode chooses, in adaptive supersampling
- --------- ----
- antialiasing, between testing all scene objects (1) or only the objects
- found at the pixel corners and inside (0-default; this greatly reduces
- CPU time, but with very small objects, it sometimes fails).
-
- [Iintersect-adjust-mode]
- --------- ------ ----
- The parameter intersect-adjust-mode avoids some problems with invalid
- --------- ------ ----
- self-intersections (1) (0-default). Scenes with text objects should be
- traced with this parameter equal to 1.
-
- [jjittering-mode]
- --------- ----
- The parameter jittering-mode chooses jittered sampling (1) or not (0-
- --------- ----
- default). Sometimes, activating it produces better images from scenes
- with small tricky details.
-
- [llighting-mode]
- -------- ----
- The parameter light-mode controls the generation of shadow rays through
- ----- ----
- non-opaque objects: 0-none (default), 1-partial, 2-full. If a scene has
- translucent objects, to obtain realism one should use 1 or 2 (better).
-
- [mshading-mode]
- ------- ----
- The parameter shading-mode chooses between shading models: 0-normal
- ------- ----
- phong, 1-strauss (default but slower) (note: this model was developed by
- Paul Strauss of SGI).
-
- [nnormal-mode]
- ------ ----
- The parameter normal-mode controls the correction of surface normals, so
- ------ ----
- that it points against the incident ray: 0-always (default), 1-only
- inside objects. With "correct" objects, it is good to use 1.
-
- [xwalk-mode]
- ---- ----
- The parameter walk-mode controls how pixels are scanned inside the
- ---- ----
- picture. Default is 0, which is a serpertine walk (left to right, right
- to left, and so on). 1 means an Hilbert (fractal) walk, which demands
- more memory, but maximizes the effect of pixel coherency (in scenes with
-
-
- January, 1994 2
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- many objects, it can save some time!). Perhaps 1 should be the
- default...
-
- [znormal-check-mode]
- ------ ----- ----
- The parameter normal-check-mode controls the correction of surface
- ------ ----- ----
- normals when textures that modify the normal are used, as they may
- sometimes create strange surface effects. This tends to happen if the
- scale of the normal perturbation is big. 0-no correction (default), 1-
- correction.
-
- [Rrawfile]
- -------
- The parameter rawfile creates a raw image file, without any antialiasing
- -------
- (all defects show up!).
-
- [psampling-levels]
- -------- ------
- The parameter sampling-levels controls the amount of sampling levels
- -------- ------
- inside pixels: 0-none (default) ... 3-maximum. A reasonable value is 2
- for high resolutions, but for small ones 3 gives better (and slower)
- results.
-
- [sshading-levels]
- ------- ------
- The parameter shading-levels establishes a maximum shading tree depth
- ------- ------
- (default is 8). When a scene has transparent/reflective objects, it may
- be important to lower this parameter, or else the tracing never stops. In
- the other cases, there should be no problem allowing it to be big.
-
- [ttexture-mode]
- ------- ----
- The parameter texture-mode allows the definition of texture(s) for the
- ------- ----
- objects: 0-no textures (default), 1-with textures defined inside objects
- field, 2-with textures defined after objects field. As textures may
- consume much CPU time, they should be activated only for final images.
-
- [vview-mode]
- ---- ----
- The parameter view-mode chooses the view mode: 0-normal (default), 1-left
- ---- ----
- eye, 2-right eye.
-
- [Pfocal-aperture]
- ----- --------
- The parameter focal-aperture defines the focal aperture of the camera
- ----- --------
- (default 0.0, ie, pinhole camera). If different than zero, there is depth
- of field, and so adaptive supersampling antialiasing will not work well.
-
- [Ffocal-distance]
- ----- --------
- The parameter focal-distance defines the focal distance of the camera
- ----- --------
- (default is the distance from the eye point to the look point).
-
- [Estereo-separation]
- ------ ----------
- The parameter stereo-separation controls the separation between the left
- ------ ----------
- and the right eye. If negative, it represents a percentage of the gaze
- distance.
-
- [Ooutput-format]
- ------ ------
- The parameter output-format chooses between the PIC format (0-default) or
- ------ ------
- the PPM format (1).
-
-
-
-
-
- January, 1994 3
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- [Vverbose-mode]
- ------- ----
- The parameter verbose-mode supresses any messages (0) or shows listing of
- ------- ----
- parameters (1), previous plus statistics (2-default) or previous plus a
- line by line echo of the tracing (3-default on DOS and transputers).
- Note: when running the DOS DJGPP version, there are two extra values that
- display the picture on the screen, -1 for grayscale or -2 for color.
- These values supress any messages.
-
- [+Oobjects-max]
- ------- ---
- The parameter objects-max defines the maximum number of objects to use
- ------- ---
- (default is 25000).
-
- [+Llights-max]
- ------ ---
- The parameter lights-max defines the maximum number of lights to use
- ------ ---
- (default is 16).
-
- [+Ssurfaces-max]
- -------- ---
- The parameter surfaces-max defines the maximum number of surfaces to use
- -------- ---
- (default is 256).
-
- [+Ccsg-level-max]
- --- ----- ---
- The parameter csg-level-max defines the maximum number of levels in CSG
- --- ----- ---
- trees to use (default is 256).
-
- [Meeye-file]
- --- ----
- The parameter eye-file is the name of a file that contains eye positions
- --- ---- ---
- for movie fly-throughs (3 real numbers representing XYZ in each line). In
- movie mode, the scene is read only once and successive images are
- -----
- produced and stored in the picture file.
-
- [Mllook-file]
- ---- ----
- The parameter look-file is the name of a file that contains look
- ---- ---- ----
- positions for movie fly-throughs.
-
- [Muup-file]
- -- ----
- The parameter up-file is the name of a file that contains up vectors for
- -- ---- --
- movie fly-throughs.
-
- [Maangle-file]
- ----- ----
- The parameter angle-file is the name of a file that contains angle
- ----- ---- -----
- apertures for movie fly-throughs (2 real numbers in each line).
-
- [M+movie-frames-max]
- ----- ------ ---
- The parameter movie-frames-max defines the maximum number of frames to
- ----- ------ ---
- produce (default is 50).
-
- The scene data internal syntax (SFF) is described bellow.
- -----
-
- The image file will contain the ray traced image. The image file has a 4
- -----
- byte header composed of width LS and MS bytes, height LS and MS bytes and
- ----- ------
- RGB byte triplets starting in the upper left corner line by line to the
- lower right corner.
-
-
-
-
-
-
- January, 1994 4
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- RESTRICTIONS
- The straightforward use:
-
- rtrace demo.sff demo.pic
-
- is not recommended, as ray tracing usually takes lots of CPU time to
- execute.
-
- So, it is better to do:
-
- rtrace demo.sff demo.pic >demo.log &
-
- or then use nice (1) or similar strategies.
- ----
-
- BUGS
- No bugs known. They have to be hidden deep somewhere, as usual.
-
- DESCRIPTION
- SFF (Simple File Format) description follows. This is a very crude ASCII
- format, almost like if generated by a lexical analyser. The idea is to
- have other programs create scene descriptions in more sophisticated ways,
- and then feed the tokenized results to this program. So, it behaves
- accordingly to the UNIX philosophy: one program for one task. Complaints
- are not wellcome!...
-
- There is a reasonable scene language available (SCN) that allows the
- creation of scenes with much more flexibility; the converter is called
- 'scn2sff' and works directly with this program.
-
- Note: the ^(circunflex) character represents start of line.
-
- [Start of File]
- ^... Comment
- ^Eye(X Y Z)
- ^Look(X Y Z)
- ^Up(X Y Z)
- ^View_angle(H V) [1,89 degrees]
- ^... Comment
- ^Background(R G B)
- ^Ambient(R G B)
- ^... Comment
- ^Light_type(Type) Position(X Y Z) Bright(R G B) ...
- | |
- | /---------------------------/
- | |
- V V
- 1-POINT:
- 2-DIRECTIONAL: Direction(X Y Z) Angle(La) Light_Factor(Lf)
- 3-EXTENDED: Radius(R) Samples(N)
- 4-PLANAR: Vector1(X Y Z) Vector2(X Y Z) Samples1(N) Samples2(N)
- ^Etc
- ^<NL>
- ^... Comment
- ^Surface_type(Type) Color(R G B) ...
- | |
- | /----------------------/
-
-
- January, 1994 5
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- | |
- V V
- 1-: Dif(R G B) Spec(R G B) Phong(Pf) Metal(Mf) Trans(R G B)
- 2-: Smoothness(R G B) Metalness(R G B) Transmission(R G B)
- ^Etc
- ^<NL>
- ^... Comment
- ^Object_type(Type) Surface_ID(S) Refraction(Re) ...
- | |
- | /------------------------/
- | |
- V V
- 1-SPHERE: Center(X Y Z) Radius(R)
- 2-PARALLELIPIPED: Center(X Y Z) Size(X Y Z)
- 3-PATCH: Origin(X Y Z) Scale(X Y Z) Filename(...)
- 4-CONE/CYLINDER: Base(X Y Z) Base_Radius(Rb) Apex(X Y Z)
- Apex_Radius(Ra)
- 5-POLYGON: Origin(X Y Z) Scale(X Y Z) Filename(...)
- 6-TRIANGLE: Origin(X Y Z) Scale(X Y Z) Filename(...)
- 7-TEXT: Filename(...)
- or
- 64-TEXTURE: see below
- 65-TRANSFORMATION: Object_ID(I)
- Transform(X1 Y1 Z1 W1 ... X4 Y4 Z4 W4)
- 66-CSG 0: Surface_ID(S) Refraction(Re) (Union-0 Sub-1 Int-2)
- CSG 1: Next CSG member
- CSG 2: End of CSG
- 67-LIST 0: Surface_ID(S) Refraction(Re)
- LIST 1: End of List
- ^Etc
- ^<NL>
- ^... Comment
- ^Texture_type(Type) Object_ID(I)
- | Transform(X1 Y1 Z1 W1 ... X4 Y4 Z4 W4)
- | ...
- | |
- V V
- 0-NULL:
- 1-CHECKER: Surface_ID(S)
- 2-BLOTCH: Scale(K) Surface_ID(S) [Filename(...) or -]
- 3-BUMP: Scale(K)
- 4-MARBLE: [Filename(...) or -]
- 5-FBM: Offset(K) Scale(K) Omega(K) Lambda(L)
- Threshold(K) Octaves(O)
- [Filename(...) or -]
- 6-FBMBUMP: Offset(K) Scale(K) Lambda(L) Octaves(O)
- 7-WOOD: Color(R G B)
- 8-ROUND: Scale(K)
- 9-BOZO: Turbulence(K) [Filename(...) or -]
- 10-RIPPLES: Frequency(K) Phase(K) Scale(K)
- 11-WAVES: Frequency(K) Phase(K) Scale(K)
- 12-SPOTTED: [Filename(...) or -]
- 13-DENTS: Scale(K)
- 14-AGATE: [Filename(...) or -]
- 15-WRINKLES: Scale(K)
- 16-GRANITE: [Filename(...) or -]
-
-
- January, 1994 6
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- 17-GRADIENT: Turbulence(K) Direction(X Y Z)
- [Filename(...) or -]
- 18-IMAGEMAP: Turbulence(K) Mode(K) Axis(X Y) Filename(...)
- 19-GLOSS: Scale(K)
- 20-BUMP3: Scale(K) Size(K)
- ^<NL>
- ^... Comments
- [End of File]
-
- 1. Valid ranges of data
-
- RGB must be in [0,1[ (Note: RGB brightness of lights may be between ]-
- 300,300[; negative values mean to not attenuate with distance).
-
- XYZ must be in [-10000,10000]
-
- Factor must be in [0,300[
-
- Filename must a valid filename for the operating system, or then '-', in
- which case data is read from the standard input or the current SFF
- stream.
-
- 2. Patch specification
-
- File format for PATCH (bicubic 4-sided patch):
-
- [Start]
- ^Patch_1_Index(1 2 3 4 5 6 7 8 9 10 11 12)
- ^Patch_2
- ^Etc
- ^<NL>
- ^Patch_Index_1_Coords(X Y Z)
- ^Patch_Index_2_Coords(X Y Z)
- ^Etc
- ^<NL>
- ^...
- [End]
-
- 3. Polygon specification
-
- File format for POLYGON (n-sided planar polygon):
-
- [Start]
- ^Polygon_1_Vertex_Number Polygon_1_Index(1 2 3 ...)
- ^Polygon_2
- ^Etc
- ^<NL>
- ^Polygon_Index_1_Coords(X Y Z)
- ^Polygon_Index_2_Coords(X Y Z)
- ^Etc
- ^<NL>
- ^...
- [End]
-
-
-
-
-
- January, 1994 7
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- 4. Triangle specification
-
- File format for TRIANGLE (3-sided polygon with vertex normals):
-
- [Start]
- ^Triangle_1_Vertice_1(X Y Z) Normal_1(X Y Z)
- Vertice_2(X Y Z) Normal_2(X Y Z)
- Vertice_3(X Y Z) Normal_3(X Y Z)
- ^Triangle_2
- ^<NL>
- ^...
- [End]
-
- If the surface is has index 0, then you must specify 3 surface indices
- after all the vertices and normals.
-
- 5. An example
-
- [Start of File]
- View
- 25 25 7 - Eye point
- 0 0 0 - Look point
- 0 1 0 - Up vector
- 30 30 - View angles
- Colors
- 0.196 0.6 0.8 - Background (Sky Blue)
- 0.1 0.1 0.1 - Ambient light
- Lights
- 1 0 60 60 0.9 0.9 0.9 - Point Light 1
- 1 20 40 -7 0.9 0.9 0.9 - Point Light 2
- <NL>
- Surfaces
- 1 0.6 0.8 0.196 0.99 0.99 0.99 0 0 0 0 0 0 0 0
- 1 0.9 0.9 0.9 0.5 0.5 0.5 0.5 0.5 0.5 50 1 0 0 0
- 1 0.5 0.5 0.5 0.1 0.1 0.1 0.1 0.1 0.1 200 0.7 0.8 0.8 0.8
- 1 0.9 0.2 0.2 0.99 0.99 0.99 0 0 0 0 0 0 0 0
- <NL>
- Objects
- 5 1 1.0 0 0 0 15 15 15 - Polygon
- 4 1 2 3 4
- <NL>
- 1 0 1
- 1 0 -1
- -1 0 -1
- -1 0 1
- <NL>
- 2 2 1.0 0 2 0 7 2 3 - Parallelepiped
- 2 3 1.5 0 5 10 3 5 3 - Parallelepiped
- 1 4 1.0 7 15 -7 3 - Sphere
- <NL>
- Textures
- 2 1 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 1 0.4 4
- 4 2 5 0 0 0 0 5 0 0 0 0 5 0 0 0 0 1
- 5 4 10 0 0 0 1 10 0 0 1 1 10 0 0 0 0 1 0 0.6 0.5 2 0.1 6
- <NL>
- Demo / 11-OCT-1989 / Antonio Costa
-
-
- January, 1994 8
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- [End of File]
-
- To ray trace without textures, do:
-
- rtrace demo.sff demo.pic >&demo.log
-
- else, do:
-
- rtrace t2 demo.sff demo.pic >&demo.log
-
- Another example with INESC symbol:
-
- [Start of File]
- View
- 45.0 45.0 81.0 - Eye point
- 45.0 45.0 -81.0 - Look point
- 0.0 1.0 0.0 - Up vector
- 30 30 - View angles
- Colors
- 0.196 0.6 0.8 - Background (Sky Blue)
- 0.3 0.3 0.3 - Ambient
- Lights
- 1 0.0 100.0 100.0 1 1 1 - Light 1 (White)
- 1 90.0 100.0 100.0 1 1 0 - Light 2 (Yellow)
- <NL>
- Surfaces
- 1 0.557 0.420 0.137 0.8 0.7 0.7 0.2 0.3 0.3 30 0.8 0 0 0
- 1 0.137 0.420 0.557 0.5 0.5 0.6 0.5 0.5 0.4 5 0.2 0 0 0
- 1 0.600 0.800 0.200 0.9 0.9 0.9 0.0 0.0 0.0 1 0 0 0 0
- <NL>
- Objects
- 1 1 1.0 10.0 09.5 0.0 4.5 - Sphere
- 1 1 1.0 10.0 26.5 0.0 4.5
- 1 1 1.0 20.0 63.5 0.0 4.5
- 1 1 1.0 20.0 80.0 0.0 4.5
- 1 1 1.0 40.0 09.5 0.0 4.5
- 1 1 1.0 40.0 26.5 0.0 4.5
- 1 1 1.0 40.0 43.5 0.0 4.5
- 1 1 1.0 50.0 80.0 0.0 4.5
- 1 1 1.0 60.0 53.0 0.0 4.5
- 1 1 1.0 70.0 09.5 0.0 4.5
- 1 1 1.0 70.0 43.5 0.0 4.5
- 4 2 1.0 10.0 30.0 0.0 1.5 10.0 70.0 0.0 1.5 - Cylinder
- 1 2 1.0 10.0 70.0 0.0 1.5
- 4 2 1.0 10.0 70.0 0.0 1.5 17.5 77.5 0.0 1.5
- 4 2 1.0 12.5 12.0 0.0 1.5 20.0 19.5 0.0 1.5
- 1 2 1.0 20.0 19.5 0.0 1.5
- 4 2 1.0 20.0 19.5 0.0 1.5 20.0 60.0 0.0 1.5
- 4 2 1.0 22.5 61.0 0.0 1.5 37.5 46.0 0.0 1.5
- 4 2 1.0 37.5 12.0 0.0 1.5 30.0 19.5 0.0 1.5
- 1 2 1.0 30.0 19.5 0.0 1.5
- 4 2 1.0 30.0 19.5 0.0 1.5 30.0 33.5 0.0 1.5
- 1 2 1.0 30.0 33.5 0.0 1.5
- 4 2 1.0 30.0 33.5 0.0 1.5 37.5 41.0 0.0 1.5
- 4 2 1.0 30.0 26.5 0.0 1.5 36.5 26.5 0.0 1.5
- 4 2 1.0 40.0 47.0 0.0 1.5 40.0 70.0 0.0 1.5
-
-
- January, 1994 9
-
-
-
- RTRACE(1G) Unix Programmer's Manual RTRACE(1G)
-
-
- 1 2 1.0 40.0 70.0 0.0 1.5
- 4 2 1.0 40.0 70.0 0.0 1.5 47.5 77.5 0.0 1.5
- 4 2 1.0 42.5 12.0 0.0 1.5 50.0 19.5 0.0 1.5
- 1 2 1.0 50.0 19.5 0.0 1.5
- 4 2 1.0 50.0 19.5 0.0 1.5 50.0 43.0 0.0 1.5
- 1 2 1.0 50.0 43.0 0.0 1.5
- 4 2 1.0 50.0 43.0 0.0 1.5 57.5 50.5 0.0 1.5
- 4 2 1.0 67.5 12.0 0.0 1.5 60.0 19.5 0.0 1.5
- 1 2 1.0 60.0 19.5 0.0 1.5
- 4 2 1.0 60.0 19.5 0.0 1.5 60.0 33.5 0.0 1.5
- 1 2 1.0 60.0 33.5 0.0 1.5
- 4 2 1.0 60.0 33.5 0.0 1.5 67.5 41.0 0.0 1.5
- 5 3 1.0 0.0 4.0 0.0 200.0 200.0 200.0 - Polygon
- 4 1 2 3 4
- <NL>
- 1.0 0.0 1.0
- 1.0 0.0 -1.0
- -1.0 0.0 -1.0
- -1.0 0.0 1.0
- <NL>
- <NL>
- End
- INESC Logo / 23-FEB-1989 / Antonio Costa
-
- HISTORY
- Copyright (C) 1988, 1994 Antonio Costa.
- Permission is granted to use this file in whole or in part for any
- purpose, educational, recreational or commercial, provided that this
- copyright notice is retained unchanged. This software is available to all
- free of charge by anonymous FTP.
-
- 27-Jan-94 Antonio Costa
- Release 8.4.0
- acc@asterix.inescn.pt
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- January, 1994 10
-
-